1. Field of the Invention
This invention relates to memory coherency. More particularly, the invention relates to a system and method for improving access of coherent memory.
2. Description of the Related Art
Many computing systems today are scalable and include multiple processors and input/output (I/O) agents that interface with I/O and storage devices (e.g., keyboards, mice, joysticks, hard drives, etc.). Many computing systems today also include coherent memories. In some systems, the coherent memory is a coherent cache for multiple processors. With today's cache being included in the processor, a coherent cache means that the processor shares its cache with other agents that may request access to the cache (e.g., other processors or the I/O agent).
When a computing system includes multiple coherent cache memories and multiple request agents like the multiple processors and the I/O agent, a conflict may occur when two agents request access to a cache line at the same time. To alleviate this problem, a system of arbitrating for access to a specific cache line between multiple request agents is typically accomplished by creating a cache coherency protocol.
As the number of caches and/or request agents increases in a computing system, the complexity of maintaining cache coherency also increases as the cache coherency protocol must be adapted to the newly scaled computing system.
In some systems, cache coherency protocols will broadcast snoop requests to all agents that contain coherent cache lines. Then, if multiple requests to the same cache line are received by the agent, the agent arbitrates as to which requestor “wins” and has its request processed. The typical “winner” is the agent whose snoop request is received first. Typically, all agents will run arbitration, even if the agent is not active in the received snoops, in order to determine which agent's requests will be processed. One example of this protocol is the 2-hop snoopy coherency protocol.
One difficulty with the above cache coherency protocol types is that snoops must be sent to every caching agent and arbitration must be handled by every cache agent. Thus, each agent must know which agents exist on the network, which may be difficult in easily scalable systems. For example, for systems that allow remote access (RAS), such as a computing system running Microsoft® NT Operating Environment, each agent of the system would need to know when the remote agent exists and does not exist.
In three-hop protocols, a master agent receives all snoops and determines which snoop will be processed if a conflict arises. The master agent will process the snoop that arrives first. Successive snoops while the master agent is busy will cause the master agent to send a Negative Acknowledgement (NAck) signal back to the caching agent sending the snoop. The caching agent then periodically retries sending the snoop until the snoop is accepted by the master agent (a NAck signal is not received).
One difficulty with the above is that transfer paths, computing resources, and time are taken up by the Retry/NAck process while the master agent is busy.
Therefore, what is needed is an improved cache coherency protocol. What is further needed is an improved system and method for implementing the improved cache coherency protocol.